﻿using System;

namespace graph_test {
    class Program {
        static void Main (string[] args) {
            Console.WriteLine ("Hello World!");
        }
    }

    public class GraphAddMatrix<T> : IGraph<T> {
        private Node<T>[] nodes;
        private int[, ] matrix;
        private int numEdges;
        public GraphAddMatrix (int n) {
            nodes = new Node<T>[n];
            matrix = new int[n, n];
            numEdges = 0;
        }

        public Node<T> GetNode (int index) {
            return nodes[index];
        }
        public void SetNode (int index, Node<T> node) {
            nodes[index] = node;
        }
        public int GetMatrix (int index1, int index2) {
            return matrix[index1, index2];
        }
        public void SetMatrix(int index1,int index2){
            matrix[index1,index2]=1;
        }
        public void DelEdge (Node<T> v1, Node<T> v2) {
            throw new NotImplementedException ();
        }

        public int GetNumOfEdge () {
            throw new NotImplementedException ();
        }

        public int GetNumOfVertex () {
            throw new NotImplementedException ();
        }

        public bool IsEdge (Node<T> v1, Node<T> v2) {
            throw new NotImplementedException ();
        }

        public void SetEdge (Node<T> v1, Node<T> v2, int v) {
            throw new NotImplementedException ();
        }
    }

    public class Node<T> {
        public T data { get => data; set => data = value; }
        public Node (T v) {
            data = v;
        }
    }
    public interface IGraph<T> {
        int GetNumOfVertex ();
        int GetNumOfEdge ();
        void SetEdge (Node<T> v1, Node<T> v2, int v);
        void DelEdge (Node<T> v1, Node<T> v2);
        bool IsEdge (Node<T> v1, Node<T> v2);
    }
}